package com.guaoran.interview.before.jd;

import java.math.BigDecimal;
import java.util.ArrayList;

public class Java {
	/***
	 * 1.redis锁的 
	 * 2.int和long的区别
	 * 	1.int:整型：二进制：4字节，32位：-2的31次方-->（2的31次方-1）:-2147483648-->2147483647
	 * 	2.long：长整型，二进制：8字节，64位：-2的63次方-->（2的63-1） 
	 * 3.float和double的区别
	 * 	1.float：单精度，二进制：32位：：4个字节，8个有效数字， 
	 * 	2.double：双精度，二进制：64位，8个字节，17个有效数字
	 * 4.double相乘
	 	double d = new BigDecimal(3.14).multiply(new BigDecimal(2.0)).doubleValue();
	 * 5.常用设计模式，怎么设计的 
	 * 6.位移怎么算的？ 
	 * 7.带符号、无符号
	 * 8.索引 a和b ，a可以用吗
	 	如果索引是建立在多个列上,只有在它的第一个列(leading column)被where子句引用时,
		优化器才会选择使用该索引。
 		当引用索引的第二个列时,优化器使用了全表扫描而忽略了索引。
	 * 9.arraylist和数组的区别
	 	数组初始化的时候长度是固定的，ArrayList是可以扩容的
	 	数组添加的时候比ArrayList添加快，因为ArrayList需要考虑是否要进行扩容
	 * 10.链表和数组的区别在哪里？
	 * 	数组静态分配内存，链表动态分配内存；
		数组在内存中连续，链表不连续；
		数组查询快，链表查询慢（存在本内存和下一个节点的信息，必须通过上一个节点的信息才能获得下一个节点的信息）
		数组增删慢，链表增删快
		数组长度在初始化的时候是固定的，而链表是可以扩容的。
		数组利用下标定位，时间复杂度为O(1)，链表定位元素时间复杂度O(n)；
		数组插入或删除元素的时间复杂度O(n)，链表的时间复杂度O(1)。
	 * 11.常量池

	 */
	public static void main(String[] args) {
		float s = 112345678f;
		System.out.println(s);
		// Double d = 44;
		System.out.println(0x80000000);
		float f1 = (float) Math.pow(2, 128);
		System.out.println("folat.maxVlaue=" + Float.MAX_VALUE
				+ ",folat.minValue=" + Float.MIN_VALUE);
		System.out.println(4.9e-324);

		System.out.println();
		System.out.println("1&1:与=" + (1 & 1));
		System.out.println("1&0：与=" + (1 & 0));
		System.out.println("0&0：与=" + (0 & 0));
		System.out.println("1|1：或=" + (1 | 1));
		System.out.println("1|0：或=" + (1 | 0));
		System.out.println("0|0：或=" + (0 | 0));
		System.out.println("1^1：异或=" + (1 ^ 1));
		System.out.println("0^0：异或=" + (0 ^ 0));
		System.out.println("1^0：异或=" + (1 ^ 0));
		System.out.println("~1：非=" + (~1));
		System.out.println("~0：非=" + (~0));

		System.out.println(Integer.parseInt("0010", 2));
		System.out.println(Integer.parseInt("-1010", 2));
		
		ArrayList<String> a = new ArrayList<>();
		String[] b = new String[5];
		Object[] o = new Object[2];
		o[0] = "";
		double d = 3.14;
		double e = 2.0;
		System.out.println("=========");
		BigDecimal bigDecimal = new BigDecimal(d);
		BigDecimal bigDecimal2 = new BigDecimal(e);
		BigDecimal h = bigDecimal.multiply(bigDecimal2);
		System.out.println(h);
		double f = h.doubleValue();
		System.out.println(f);
	}

}
